
/**
 * 存储系统
 * @class StorageSystem
 * @summary 数据存储, 单例对象
 * @author IGER
 * @example
let ss = require('StorageSystem').share()
ss.get('id')
 */


class StorageSystem
{
    static mInstance = null

    static share()
    {
        if (!this.mInstance)
        {
            this.mInstance = new StorageSystem()
            this.mInstance.init()
        }
        return this.mInstance
    }

    init()
    {
        try
        {
            let d = cc.sys.localStorage.getItem("core.ptd")
            this.mData = d ? JSON.parse(d) : {}
        }
        catch(e)
        {
            this.mData = {}
        }
    }

    /**
     * 保存当前所有的数据记录
     */
    write()
    {
        cc.sys.localStorage.setItem("core.ptd", this.mData ? JSON.stringify(this.mData) : '')
    }

    /**
     * 根据key获取数据记录
     * @param {String} k 数据的key
     */
    get(k)
    {
        if (this.mData)
        {
            let d = this.mData[k]
            if (d != null && d != undefined)
            {
                return d
            }
        }
        return null
    }

    /**
     * 保存数据记录
     * @param {String} k 数据的key
     * @param {Object} k 数据的对象 或者String 或者Number
     * @param {Boolean} s 是否立即保存
     */
    set(k, v, s)
    {
        this.mData[k] = v

        if (s)
        {
            this.write()
        }
    }
}

export default StorageSystem
